# -*- coding: utf-8 -*-

from django.db import models
from django.contrib.auth.models import User
import re




class Debug(models.Model):
    texto = models.TextField(null=True, blank=True)

    def __unicode__(self):
        return str(self.id)




class Cliente(models.Model):

    nome = models.CharField(max_length=255, null=False, verbose_name=(""), help_text="")
    email = models.CharField(max_length=80, null=False, unique=True, verbose_name=(""), help_text="")
    rg = models.CharField(max_length=20, null=False, unique=True, verbose_name=(""), help_text="")
    data_emissao_rg = models.CharField(max_length=10, null=False, verbose_name=(""), help_text="")
    orgao_emissor_rg = models.CharField(max_length=20, null=False, verbose_name=(""), help_text="")
    estado_emissor_rg = models.CharField(max_length=2, null=False, verbose_name=(""), help_text="")
    cpf = models.CharField(max_length=17, null=False, unique=True, verbose_name=(""), help_text="")
    sexo = models.CharField(max_length=20, null=False, verbose_name=(""), help_text="")
    data_nascimento = models.CharField(max_length=10, null=False, verbose_name=(""), help_text="")
    endereco = models.CharField(max_length=100, null=False, verbose_name=(""), help_text="")
    complemento = models.CharField(max_length=80, null=False, verbose_name=(""), help_text="")
    bairro = models.CharField(max_length=50, null=False, verbose_name=(""), help_text="")
    cidade = models.CharField(max_length=50, null=False, verbose_name=(""), help_text="")
    estado = models.CharField(max_length=2, null=False, verbose_name=(""), help_text="")
    cep = models.CharField(max_length=9, null=False, verbose_name=(""), help_text="")
    informacoes_loja = models.CharField(max_length=3, null=False, default='nao', verbose_name=(""), help_text="Informa se o cliente deseja receber informacoes da loja. Pode ter os valores \"Sim\" ou \"Nao\".")

    telefone = models.CharField(max_length=20, null=False, verbose_name=(""), help_text="")
    celular = models.CharField(max_length=20, null=False, verbose_name=(""), help_text="")

    usuario = models.OneToOneField(User, null=False, blank=False)

    def save(self, *args, **kwargs):

        if self.informacoes_loja == '' or self.informacoes_loja is None:
            self.informacoes_loja = 'Nao'
        self.cpf = re.sub("[ .-]", "", self.cpf)

        super(Cliente, self).save(*args, **kwargs)




CHOICES_STATUS =(
                    (0, 'Transacao em Andamento'),
                    (1, 'Transacao Concluida'),
                    (2, 'Transacao Cancelada'),
                )
'''
0 - Pagamento Digital recebeu a transacao, esta analisando ou aguardando o pagamento.
1 - quando a transacao ja passou por todo o processo e foi finalizada, ou foi confirmado o pagamento.
2 -  por qualquer motivo a transacao foi cancelada, pagamento foi negado, estornado, ocorreu um chargeback.
'''

class Pedido(models.Model):
    '''
    Armazena os dados do pedido e do retorno recebido.
    '''
    
    id_transacao = models.FloatField(verbose_name=(""), default=0, help_text="ID da transacao que foi gerada no Pagamento Digital.")
    data_transacao = models.CharField(max_length=12, default='', verbose_name=(""), help_text="Data da transacao que foi gerada no Pagamento Digital. Formato: (dd/mm/aaaa)")
    data_credito = models.CharField(max_length=12, default='', verbose_name=(""), help_text="Data em que a loja recebera o credito. Formato: (dd/mm/aaaa)")
    valor_original = models.FloatField(verbose_name=(""), default=0, help_text="Valor original da compra.")
    valor_loja = models.FloatField(verbose_name=(""), default=0, help_text="Valor que a loja recebera.")
    valor_total = models.FloatField(verbose_name=(""), default=0, help_text="Valor total para o cliente, com os juros.")
    desconto = models.FloatField(verbose_name=(""), default=0, help_text="Valor total do desconto.")
    acrescimo = models.FloatField(verbose_name=(""), default=0, help_text="Valor total do acrescimo.")
    tipo_pagamento = models.CharField(max_length=80, default='', verbose_name=(""), help_text="Tipo de pagamento que o cliente escolheu.")
    parcelas = models.IntegerField(verbose_name=(""), help_text="Numero de parcelas da compra.", default=1)

    status = models.CharField(max_length=50, verbose_name=(""), help_text="")
    cod_status = models.IntegerField(verbose_name=(""), help_text="", choices=CHOICES_STATUS)
    frete = models.FloatField(verbose_name=(""), default=0, help_text="")
    tipo_frete = models.CharField(max_length=30, default='', verbose_name=(""), help_text="")
    email_vendedor = models.CharField(max_length=255, default='', verbose_name=(""), help_text="")

    free = models.CharField(max_length=255, verbose_name=(""), help_text="Dados adicionais que foram enviados no POST.")

    cliente = models.ForeignKey(Cliente, verbose_name=(""), help_text="")




class Produto(models.Model):
    '''
    Este modelo armazena os produtos enviados para compra.
    '''
    codigo = models.CharField(max_length=50, verbose_name=(""), help_text="Codigo referente ao produto no seu sistema.")
    descricao = models.CharField(max_length=255, null=False, verbose_name=(""), help_text="")
    qtde = models.IntegerField(null=False, verbose_name=(""), help_text="")
    valor = models.FloatField(null=False, verbose_name=(""), help_text="Valor unitario do produto.")
    extra = models.CharField(max_length=255, null=False, verbose_name=(""), help_text="Informacoes extras do produto.")

    pedido = models.ForeignKey(Pedido, null=False, verbose_name=(""), help_text="")



